Attention Convolutional Binary Neural Tree for Fine-Grained Visual Categorization
abstract
- 在树结构的边上结合卷积操作,使用路由方法定义叶子节点到根节点的计算路径,树的不同分支关注不同的局部区域,最终的预测结果为叶子节点的预测之和。
- 卷积操作用于捕捉目标的特征表示,树结构使得网络能够以由粗到细的层级模式进行特征学习。
- 使用attention transformer模块帮助网络捕捉具有高辨别力的区域。
Inspiration
- (Peng 2017)Object-part Attention model, 证实使用多个深度模型关注目标的不同区域是有效的
- (Tanno 2019)类似本文的树结构方法,其中树结构随着学习进程推进增长。
Related Works
Deep supervised methods
- (zhang 2014)双detector,在pose-normalized的特征表示上预测。
- (Llu 2016)fully convolutional attention networks, glimpses local discriminative regions to adapt to different fine-grained domains
- (Huang 2016)part-stacked CNN architecture,对目标各part的细微差别建模。
- 这类方法依赖大量标注,限制了应用范围。
Deep weakly supervised methods
- (zheng 2017)Multi-attention CNN,part生成与特征学习互相促进。
- (Fu 2017)recurrent attention module,在不同尺寸上递归学习高辨别度区域注意力和区域特征表示并互相促进。
- (Sun 2018)使用多个目标part的注意力区域特征对不同输入图片的多个目标part进行约束(regulate)。
- 上述方法近将注意力进制与单网络结合。
- 决策树
- 解释性优势
- (xiao 2017)神经决策树模型用于分类任务
- (Frosst 2017)将深度神经决策树模型用于理解一个特定case的决策机制
- 本文结合决策树与神经网络同时实现分支选择和特征学习
- 注意力机制
- 级联注意力
- 通道注意力
- 结合区域注意力与特征矩阵注意力
- 本文在树结构的分支上应用注意力
Attention Convolution Binary Neural Tree ( ACNet )
ACNet表示为二元组$(\mathbb{T}, \mathbb{O})$,$\mathbb{T}$为树的拓扑,$\mathbb{O}$为树边上的操作集合。$\mathbb{T}={\mathcal{V}, \mathcal{E}},$ $\mathcal{V}=\left{v_{1}, \cdots, v_{n}\right}$ 为节点集合,$n$为节点个数, $\mathcal{E}=\left{e_{1}, \cdots, e_{k}\right}$为边的集合,由于树为二叉完全树,有$n=2^{h}-1$,$k=2^{h}-2$。树中的每个节点由路由模块产生,决定样本的传输分发路径。attention transform即边上的操作。
- Backbone Network
- 由于细粒度分类中的高辨别度区域通常是局部的,因此需要小感受野(小步长、小池化核),因此使用VGG-16(Conv1_1 to Conv4_3),预训练于ILSVRC CLS-LOC数据集。
- 输入图像尺寸修改为448 x 448(原本224 x 224)
- 可使用其他网络作为主干
- Branch Routing
- 用于确定样本接下来分发至左子树还是右子树
- 1x1卷积 -> global context block(Non-local与Squeeze-Excitation的融合)-> 全局平均池化 ->元素平方根、L2正则化 -> 全连接层、Sigmoid得到[0,1]值,对应左子树及右子树的概率。
- Attention Transformer Module
- 在3x3卷积后插入注意力模块(如上图所示),产生通道注意力矩阵。
- Label Prediction Module
- 由BN,1x1卷积、最大池化、平方根、L2政治则、全连接层组成。
- 最终预测$\mathcal{C}\left(x_{j}\right)=\sum_{i=1}^{2^{h-1}} \mathcal{P}{i}\left(x{j}\right) r_{i}^{h}\left(x_{j}\right)$,其中$\mathcal{P}{i}$为第i个叶子节点的分类概率,$r{i}^{k}\left(x_{j}\right)$为由根节点分发到第k层第i个节点的概率。
Trainning
数据增强
- crop, flip
- 短边缩放到512像素
- Loss Function
- $\mathcal{L}=L\left(\mathcal{C}\left(x_{j}\right), y^{}\right)+\sum_{i=1}^{2^{n-1}} L\left(\mathcal{P}{i}\left(x{j}\right), y^{}\right)$
- 分为所有叶子节点的预测loss之和,最终预测loss两部分
- 优化
- 哈维初始化
- 前60轮fix VGG参数,之后finetune